Skip to content

T18 and a fourth post: a repair reaches only the copy it lands in - #712

Merged
gHashTag merged 1 commit into
mainfrom
feat/t18-and-post4
Aug 11, 2026
Merged

T18 and a fourth post: a repair reaches only the copy it lands in#712
gHashTag merged 1 commit into
mainfrom
feat/t18-and-post4

Conversation

@gHashTag

Copy link
Copy Markdown
Owner

Sixteen defects repaired in one package last night, and the consumer that depends on it did not improve by a single error. Both repositories carried their own src/vsa/core.zig and five siblings, edited independently since the migration that split them — the fixes went into different files with the same names. No instrument reported it, because each copy compiles entirely on its own.

T18 — Parnas (1972) gave the criterion and gave changeability as the reason: each design decision should have exactly one home. The corollary is arithmetic. A decision living in n places is repaired n times, the repairs do not propagate, and neither build can see that the other exists. Divergence is not a risk duplication carries; it is what duplication is.

Choosing which copy to keep stopped being a judgement after five minutes of measurement: the two public surfaces are identical, one constant apart. Replacing the duplicates with re-exports took the consumer from five errors to green (gHashTag/zig-hdc#3), with the whole surface analysed rather than only the part its tests walk.

What it does not claim: vendoring is a defensible trade when chosen and written down; a re-export is not free either, since names must be listed one by one now that usingnamespace is gone.

The fourth blog post carries the same material for a reader who is not looking at a theorem list — both languages, with three open questions: the original consumer is still red, the re-export has a maintenance cost, and whether the eighteen files left behind belong upstream was not decided.

Sixteen defects were repaired in one package last night and the consumer that
depends on it did not improve by a single error. Both repositories carried their
own src/vsa/core.zig and five siblings, edited independently since the migration
that split them, so the fixes went into different files with the same names. No
instrument reported it, because each copy compiles entirely on its own.

Parnas gave the criterion in 1972 and gave changeability as the reason: each
design decision should have exactly one home. The corollary is arithmetic. A
decision living in n places is repaired n times, the repairs do not propagate,
and neither build can see that the other exists. Divergence is not a risk
duplication carries; it is what duplication is.

Choosing which copy to keep stopped being a judgement after five minutes of
measurement: the two public surfaces are identical, one constant apart. Nothing
is lost by keeping either, so the direction follows the dependency that already
exists. Replacing the duplicates with re-exports took the consumer from five
errors to green, with the whole public surface analysed rather than only the
part its tests walk.

The theorem states what it does not claim as well: vendoring is a defensible
trade when it is chosen and written down, and a re-export is not free either,
because names must be listed one by one now that usingnamespace is gone.

The post carries the same material for a reader who is not looking at a theorem
list, in both languages, with the three open questions that remain -- the
original consumer is still red, the re-export has a maintenance cost, and
whether the eighteen files left behind belong upstream was not decided.
@gHashTag
gHashTag merged commit 01bdfc6 into main Aug 11, 2026
8 of 17 checks passed
@gHashTag
gHashTag deleted the feat/t18-and-post4 branch August 11, 2026 18:35
github-actions Bot added a commit that referenced this pull request Aug 11, 2026
T18 and a fourth post: a repair reaches only the copy it lands in (#712)

Sixteen defects were repaired in one package last night and the consumer that
depends on it did not improve by a single error. Both repositories carried their
own src/vsa/core.zig and five siblings, edited independently since the migration
that split them, so the fixes went into different files with the same names. No
instrument reported it, because each copy compiles entirely on its own.

Parnas gave the criterion in 1972 and gave changeability as the reason: each
design decision should have exactly one home. The corollary is arithmetic. A
decision living in n places is repaired n times, the repairs do not propagate,
and neither build can see that the other exists. Divergence is not a risk
duplication carries; it is what duplication is.

Choosing which copy to keep stopped being a judgement after five minutes of
measurement: the two public surfaces are identical, one constant apart. Nothing
is lost by keeping either, so the direction follows the dependency that already
exists. Replacing the duplicates with re-exports took the consumer from five
errors to green, with the whole public surface analysed rather than only the
part its tests walk.

The theorem states what it does not claim as well: vendoring is a defensible
trade when it is chosen and written down, and a re-export is not free either,
because names must be listed one by one now that usingnamespace is gone.

The post carries the same material for a reader who is not looking at a theorem
list, in both languages, with the three open questions that remain -- the
original consumer is still red, the re-export has a maintenance cost, and
whether the eighteen files left behind belong upstream was not decided.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant